1 Traitement de données spatiales

1.1 Préparer son environement de travail

  • Créez un projet RStudio.
    Dans RStudio créez un projet et nommé le exercice. Il s’agit d’une bonne pratique qui vous facilitera la tâche. Cela améliore l’organisation et la portabilité de votre travail.
  • Dans le projet, créez un dossier data.
  • Téléchargez les données :
    • Un fichier contenant les polygones des communes d’Occitanie au format gpkg est disponible ici : Occitanie.gpkg. Il faut télécharger le fichier puis le placer dans le dossier data que vous venez de créer.
    • Un fichier contenant des données socio-démographiques sur les communes de France est disponible ici : base_cc_comparateur.xls. Il faut le télécharger et le mettre également dans le même dossier data.
  • Créez un fichier exo1.R et enregistrez le à la racine du projet.

Votre projet RStudio doit être structuré de la manière suivante :

Vous devez enregistrer votre script régulièrement dans le fichier exo1.R.

Source du fichier Occitanie.gpkg : ADMIN EXPRESS COG édition 2019, IGN
Source du fichier base_cc_comparateur.xls : Base comparateur de territoires 2019, INSEE

1.2 Charger une couche géographique

  • Chargez la couche géographique des communes d’Occitanie en utilisant le package sf et la fonction st_read().
  • Vérifiez le système de projection avec st_crs(). S’agit-il de données projetée ? Si ce n’est pas le cas, transformez la couche des communes dans la projection française (Lambert 93, EPSG : 2154) avec la fonction st_transform().
## Linking to GEOS 3.7.1, GDAL 2.4.0, PROJ 5.2.0
## Reading layer `Occitanie' from data source `/home/tim/Documents/prz/carto_avec_r_exo/data/Occitanie.gpkg' using driver `GPKG'
## Simple feature collection with 4454 features and 11 fields
## geometry type:  MULTIPOLYGON
## dimension:      XY
## bbox:           xmin: -0.3271723 ymin: 42.33292 xmax: 4.845565 ymax: 45.04557
## epsg (SRID):    4326
## proj4string:    +proj=longlat +datum=WGS84 +no_defs
## Coordinate Reference System:
##   EPSG: 4326 
##   proj4string: "+proj=longlat +datum=WGS84 +no_defs"

1.3 Réaliser une sélection par attributs

  • Séléctionnez toutes les communes de la Haute-Garonne.
  • Enregistrez votre séléction dans un nouvel objet nommé com31
  • Afficher la nouvelle couche (en utilisant notament st_geometry())

Pour connaitre la liste de tous les noms ou code de région on peut utiliser la fonction unique().

##  [1] "32" "31" "82" "12" "81" "30" "11" "65" "46" "09" "34" "66" "48"

1.4 Fusionner des entités

  • Fusionnez les communes de la région en un seul polygone (reg76), utilisez la fonction st_union ().
  • Créez la couche géograpique des départements de la région (dep76), utilisez la fonction aggregate() pour regrouper les polygones et calculer les sommes des populations communales.
  • Affichez les résultats (communes, départements et région)

1.5 Créer une zone tampon

  • Créez une zone tampon d’une distance de 10 km autour des limites de la commune de Toulouse avec st_buffer(). Quel est le code INSEE de la commune de Toulouse?

1.6 Réaliser un sélection par localisation

Déterminez quelles communes de la Haute-Garonne intersectent le buffer créé.

  • Utilisez la fonction st_intersects().
  • Inserez directement le resultat dans une variable nommée in_buffer dans l’objet com31.
## Simple feature collection with 2 features and 12 fields
## geometry type:  MULTIPOLYGON
## dimension:      XY
## bbox:           xmin: 504779 ymin: 6198834 xmax: 565151 ymax: 6270449
## epsg (SRID):    2154
## proj4string:    +proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
##                         ID         STATUT INSEE_COM INSEE_ARR INSEE_DEP
## 4 COMMUNE_0000000009762857 Commune simple     31046         2        31
## 5 COMMUNE_0000000009760450 Commune simple     31547         1        31
##   INSEE_REG CODE_EPCI NOM_COM_M POPULATION TYPE NOM_COM
## 4        76 200072635     BAREN         12  COM   Baren
## 5        76 200068641   SEYSSES       8787  COM Seysses
##                             geom in_buffer
## 4 MULTIPOLYGON (((504930 6199...     FALSE
## 5 MULTIPOLYGON (((556904 6267...      TRUE

1.8 Créer une couche de points

Créer un objet sf (points) contenant la localisation de la préfécture de région à Toulouse.

  • Vous pouvez récupérer la longitude et la latitude sur Google Map ou OSM.
  • Créer un point avec st_points(), puis un objet sfc avec avec st_sfc() et finalement un objet sf avec st_sf().
## Simple feature collection with 1 feature and 1 field
## geometry type:  POINT
## dimension:      XY
## bbox:           xmin: 1.45047 ymin: 43.59825 xmax: 1.45047 ymax: 43.59825
## epsg (SRID):    4326
## proj4string:    +proj=longlat +datum=WGS84 +no_defs
##         name                 geometry
## 1 Préfecture POINT (1.45047 43.59825)

1.9 Calculer des distances

Calculez une matrice de distance entre la préfecture et les centroïdes des communes du département Haute-Garonne.
Ajouter cette distance dans une nouvelle colonne dist_pref dans com31. Pour cela, utiliser les fonction st_centroid() et st_distance().
N’oubliez pas de vérifier les projections utilisées avec st_crs(), au besoin modifiez les avec st_transform().

## Coordinate Reference System:
##   EPSG: 4326 
##   proj4string: "+proj=longlat +datum=WGS84 +no_defs"
## Coordinate Reference System:
##   EPSG: 2154 
##   proj4string: "+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"
## [1] FALSE
## [1] TRUE
## Simple feature collection with 2 features and 13 fields
## geometry type:  MULTIPOLYGON
## dimension:      XY
## bbox:           xmin: 504779 ymin: 6198834 xmax: 565151 ymax: 6270449
## epsg (SRID):    2154
## proj4string:    +proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
##                         ID         STATUT INSEE_COM INSEE_ARR INSEE_DEP
## 4 COMMUNE_0000000009762857 Commune simple     31046         2        31
## 5 COMMUNE_0000000009760450 Commune simple     31547         1        31
##   INSEE_REG CODE_EPCI NOM_COM_M POPULATION TYPE NOM_COM
## 4        76 200072635     BAREN         12  COM   Baren
## 5        76 200068641   SEYSSES       8787  COM Seysses
##                             geom in_buffer     dist_pref
## 4 MULTIPOLYGON (((504930 6199...     FALSE 104829.70 [m]
## 5 MULTIPOLYGON (((556904 6267...      TRUE  17211.48 [m]

1.11 Extraire des données OpenStreetMap

  • Sélectionnez les communes d’un autre département dans un nouvel objet nommé com+codeDuDépartement* (com46 par exemple).
  • Avec le package osmdata extrayez l’ensemble des restaurants présents dans le département.
  • Affichez les communes qui ne contiennent pas de restaurants.
  • Pour ces communes calculez la distance au restaurant le plus proche.

## Data (c) OpenStreetMap contributors, ODbL 1.0. https://www.openstreetmap.org/copyright
## Warning: attribute variables are assumed to be spatially constant throughout all
## geometries

## Warning in st_centroid.sf(com46noresto): st_centroid assumes attributes are
## constant over geometries of x
## Warning in st_centroid.sf(com46noresto): st_centroid assumes attributes are
## constant over geometries of x


2 Cartographie thématique

2.1 Préparer son environement de travail

Dans le même projet RStudio créez un deuxième script nommé exo2.R.
Votre projet RStudio doit maintenant être structuré de la manière suivante :

2.2 Charger des données statistiques

  • Charger la couche géographique des communes d’Occitanie (data/Occitanie.gpkg). Utilisez le package sf et la fonction st_read() pour importer les données.
  • Vérifiez le système de projection avec st_crs().
  • Charger les fichier de données data/base_cc_comparateur.xls fournie par l’INSEE. Utilisez le package readxl et la fonction read_excel() pour ouvrir la table de données correctement. Importer la table dans un objet nommé occ_df.
## Reading layer `Occitanie' from data source `/home/tim/Documents/prz/carto_avec_r_exo/data/Occitanie.gpkg' using driver `GPKG'
## Simple feature collection with 4454 features and 11 fields
## geometry type:  MULTIPOLYGON
## dimension:      XY
## bbox:           xmin: -0.3271723 ymin: 42.33292 xmax: 4.845565 ymax: 45.04557
## epsg (SRID):    4326
## proj4string:    +proj=longlat +datum=WGS84 +no_defs
## Coordinate Reference System:
##   EPSG: 4326 
##   proj4string: "+proj=longlat +datum=WGS84 +no_defs"
## # A tibble: 2 x 36
##   CODGEO LIBGEO REG   DEP   P16_POP P11_POP SUPERF NAIS1116 DECE1116 P16_MEN
##   <chr>  <chr>  <chr> <chr>   <dbl>   <dbl>  <dbl>    <dbl>    <dbl>   <dbl>
## 1 01001  L'Abe… 84    01        767     780  16.0        41       25     306
## 2 01002  L'Abe… 84    01        243     234   9.15       21        7     101
## # … with 26 more variables: NAISD18 <dbl>, DECESD18 <dbl>, P16_LOG <dbl>,
## #   P16_RP <dbl>, P16_RSECOCC <dbl>, P16_LOGVAC <dbl>, P16_RP_PROP <dbl>,
## #   NBMENFISC16 <dbl>, PIMP16 <dbl>, MED16 <dbl>, TP6016 <dbl>,
## #   P16_EMPLT <dbl>, P16_EMPLT_SAL <dbl>, P11_EMPLT <dbl>, P16_POP1564 <dbl>,
## #   P16_CHOM1564 <dbl>, P16_ACT1564 <dbl>, ETTOT15 <dbl>, ETAZ15 <dbl>,
## #   ETBE15 <dbl>, ETFZ15 <dbl>, ETGU15 <dbl>, ETGZ15 <dbl>, ETOQ15 <dbl>,
## #   ETTEF115 <dbl>, ETTEFP1015 <dbl>

2.3 Réaliser une sélection par attributs

Créez un nouvel objet sf à partir d’une séléction par attribut`:

  • Séléctionnez toutes les communes d’un seul département (ne choisissez pas la Haute-Garonne (31)).
  • Enregistrez votre séléction dans un nouvel objet nommé com+codeDuDépartement* (com46 par exemple)
  • Afficher la nouvelle couche (plot(st_geometry(...)).

Pour connaitre la liste de tous les noms ou code de région voir la fonction unique()

##  [1] "32" "31" "82" "12" "81" "30" "11" "65" "46" "09" "34" "66" "48"

2.4 Réaliser une jointure

  • Joignez la table de données INSEE avec la couche gégographique des communes de votre département séléctionné. Utilisez la fonction merge(). Quel est l’identifiant commun entre la table géo et la table attributaire?
## Simple feature collection with 2 features and 11 fields
## geometry type:  MULTIPOLYGON
## dimension:      XY
## bbox:           xmin: 504779 ymin: 6198834 xmax: 565151 ymax: 6270449
## epsg (SRID):    2154
## proj4string:    +proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
##                         ID         STATUT INSEE_COM INSEE_ARR INSEE_DEP
## 4 COMMUNE_0000000009762857 Commune simple     31046         2        31
## 5 COMMUNE_0000000009760450 Commune simple     31547         1        31
##   INSEE_REG CODE_EPCI NOM_COM_M POPULATION TYPE NOM_COM
## 4        76 200072635     BAREN         12  COM   Baren
## 5        76 200068641   SEYSSES       8787  COM Seysses
##                             geom
## 4 MULTIPOLYGON (((504930 6199...
## 5 MULTIPOLYGON (((556904 6267...
## # A tibble: 2 x 36
##   CODGEO LIBGEO REG   DEP   P16_POP P11_POP SUPERF NAIS1116 DECE1116 P16_MEN
##   <chr>  <chr>  <chr> <chr>   <dbl>   <dbl>  <dbl>    <dbl>    <dbl>   <dbl>
## 1 01001  L'Abe… 84    01        767     780  16.0        41       25     306
## 2 01002  L'Abe… 84    01        243     234   9.15       21        7     101
## # … with 26 more variables: NAISD18 <dbl>, DECESD18 <dbl>, P16_LOG <dbl>,
## #   P16_RP <dbl>, P16_RSECOCC <dbl>, P16_LOGVAC <dbl>, P16_RP_PROP <dbl>,
## #   NBMENFISC16 <dbl>, PIMP16 <dbl>, MED16 <dbl>, TP6016 <dbl>,
## #   P16_EMPLT <dbl>, P16_EMPLT_SAL <dbl>, P11_EMPLT <dbl>, P16_POP1564 <dbl>,
## #   P16_CHOM1564 <dbl>, P16_ACT1564 <dbl>, ETTOT15 <dbl>, ETAZ15 <dbl>,
## #   ETBE15 <dbl>, ETFZ15 <dbl>, ETGU15 <dbl>, ETGZ15 <dbl>, ETOQ15 <dbl>,
## #   ETTEF115 <dbl>, ETTEFP1015 <dbl>
## Simple feature collection with 2 features and 46 fields
## geometry type:  MULTIPOLYGON
## dimension:      XY
## bbox:           xmin: 526058 ymin: 6245429 xmax: 588475 ymax: 6256838
## epsg (SRID):    2154
## proj4string:    +proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
##   INSEE_COM                       ID         STATUT INSEE_ARR INSEE_DEP
## 1     31001 COMMUNE_0000000009761264 Commune simple         2        31
## 2     31002 COMMUNE_0000000009761234 Commune simple         3        31
##   INSEE_REG CODE_EPCI NOM_COM_M POPULATION TYPE NOM_COM  LIBGEO REG DEP P16_POP
## 1        76 200072643   AGASSAC        115  COM Agassac Agassac  76  31     115
## 2        76 200071298    AIGNES        250  COM  Aignes  Aignes  76  31     250
##   P11_POP SUPERF NAIS1116 DECE1116  P16_MEN NAISD18 DECESD18  P16_LOG   P16_RP
## 1     115   9.58        5       10  51.0000       0        1  71.0000  51.0000
## 2     238  21.81       11        9 101.4073       5        0 122.4073 101.4073
##   P16_RSECOCC P16_LOGVAC P16_RP_PROP NBMENFISC16 PIMP16    MED16 TP6016
## 1          20          0    38.00000          42     NA 20809.33     NA
## 2          10         11    88.35487         105     NA 22740.67     NA
##   P16_EMPLT P16_EMPLT_SAL P11_EMPLT P16_POP1564 P16_CHOM1564 P16_ACT1564
## 1  22.96553      8.965533  31.01992      80.000     8.000000     55.0000
## 2  27.07635      8.030424  28.99414     154.619     9.036294    120.4819
##   ETTOT15 ETAZ15 ETBE15 ETFZ15 ETGU15 ETGZ15 ETOQ15 ETTEF115 ETTEFP1015
## 1      18      7      0      3      6      2      2        4          0
## 2      21      9      3      3      4      0      2        4          0
##                         geometry
## 1 MULTIPOLYGON (((526952 6255...
## 2 MULTIPOLYGON (((584462 6253...

2.5 Réaliser des cartes thématiques

Réalisez huit cartes thématiques finalisées.

Chacune des cartes devra comprendre les éléments d’habillage et de mise en page nécessaires leur compréhension (titre, légende, sources…)

Parmi ces huits cartes deux échelles différentes (échelle de la région, échelle d’un département) et deux découpages territoriaux différents (les communes, les départements) doivent être utilisés.

Vous devez réaliser les huit types de cartes suivants :

  1. Une carte de localisation (avec carton de localisation si possible, des labels, legende…);
  2. Une carte représentant une variable quantitative absolue (un stock);
  3. Une carte représentant une variable quantitative relative (un ratio);
  4. Une carte combinant une variable quantitative absolue et une variable quantitative relative (un stock et un ratio);
  5. Une carte représentant une variable qualitive;
  6. Une carte utilisant une anamorphose. Il est possible de combiner les anamorphoses avec d’autres variables (qualitative ou quantitative relative);
  7. Une carte interactive des communes du département + un point sur la préfecture du département;
  8. Une carte utilisant une grille régulière ou représentant des discontinuités.

Exemple :

  • Une carte en symboles proportionels représentant la population des départements de la région (échelle régionale, découpage départementale, carte de stock.).
  • Une carte choroplète représentant l’évolution de la population des communes d’un département (échelle départementale, découpage communale, carte de ratio).

Nous vous conseillons d’utiliser le package cartography pour l’ensemble de vos réalisations. Néanmoins l’utilisation d’autres packages comme ggplot2 ou tmap est possible.

2.6 Évaluation

Vous devrez nous rendre pour le vendredi 28 février 2020 un script permettant de construire ces huit cartes dans un fichier dont le nom est constitué de votre prénom et de votre nom (Prenom_Nom.R).
Votre script doit pouvoir fonctionner une fois inséré dans un projet RStudio structuré de la manière suivante :

Vous serez évalués de la manière suivante :

  • 2 points par cartes (choix sémiologiques, traitement des données en amont…),
  • 4 points pour la qualité et la présentation du code (reproductibilité, commentaires, clareté).

2.7 Aides


  1. UMS RIATE, CNRS

  2. FR CIST, CNRS